package com.atguigu.demo;

import java.util.Comparator;

/**
 * Created by Smexy on 2022/10/11
 *
 *
 * 语法:  -> 把表达式一分为二。
 *      -> 左侧代表参数列表，右侧代表方法体。
 *              类型可以省略，由编译器自动推导
 *              如果参数列表只有一个参数，()也能省略
 *      -> 右侧的方法体，如果有只有一行代码，那么 {} 可以省略.
 *                     如果只有一行代码，有返回值，return也可以省略
 *
 *
 *      方法引用: 本质是lamda表达式的变体是接口的某个实例
 *
 *
 */
public class LamdaDemo2
{
    public static void main(String[] args) {

        Comparator c1= new Comparator<Integer>(){
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1.compareTo(o2);
            }
        };

        System.out.println(c1.compare(1, 2));

        System.out.println("-------------用lamda表达式简化----------");


        /*
                ( o1,  o2) ->  o1.compareTo(o2);

         */
        Comparator<Integer> c2 =  ( o1,  o2) ->  o1.compareTo(o2);

        System.out.println(c2.compare(1, 2));

        System.out.println("-------------用方法引用简化----------");


        /*
             Comparator<Integer> c3 =  new  Comparator<Integer>{
                public int compare(Integer o1, Integer o2){
                     return (o1).compareTo(o2);
                }

             }

         */
        Comparator<Integer> c3 = Integer::compareTo;
        System.out.println(c3.compare(1, 2));


    }
}
